home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / tasc_jh < prev    next >
Internet Message Format  |  1995-03-31  |  45KB

  1. From: Jonathan T. Higa <higa@IFA.Hawaii.Edu>
  2. Subject:  v05i038:  tasc_jh - tasc v2.50, Part01/01
  3. Newsgroups: comp.sources.hp48
  4. Followup-To: comp.sys.hp48
  5. Approved: spell@seq.uncwil.edu
  6.  
  7. Checksum: 3411218987 (verify with brik -cv)
  8. Submitted-by: Jonathan T. Higa <higa@IFA.Hawaii.Edu>
  9. Posting-number: Volume 5, Issue 38
  10. Archive-name: tasc_jh/part01
  11.  
  12. BEGIN_DOC tasc.rdm
  13. At last, I got around to the automatic target filename creation.
  14. I also put back the T(1) into the ASC headers--I'd forgotten that
  15. T(0) mode is troublesome for PC users.  (My HP is in T(3) mode.)
  16.  
  17. Please, if ANYBODY has trouble with tasc, let me know!  My address
  18. is normally jonhiga@phoenix.princeton.edu.  For the summer, I'm at
  19. higa@ifa.hawaii.edu.  Hopefully, this should be the last set of
  20. fixes necessary.
  21.  
  22. I don't have access to a MS-DOS system over the summer, so--Chris,
  23. would you please test this with the line
  24.     tasc SampleFile nul
  25. on an IBM after you've compiled it, where SampleFile is any HP-type file
  26. you have handy?  I'd like to know if this works, because some have told
  27. me that this becomes a handy CRC check.
  28.  
  29. [ Yep, it works great.  Thanks for this GREAT program!  It makes my
  30.   life easier.  I use tasc to generate asc for any program I receive
  31.   that doesn't have asc included.  With this program, it almost makes
  32.   uuencoded binaries obsolete.  -chris ]
  33.  
  34. This time, I've also included a uuencoded sun4-executable.
  35.  
  36. Jonathan Higa
  37. END_DOC
  38.  
  39. BEGIN_SRC tasc.c
  40. /* Tasc:  HP48-binary <-> HP48-ASC.
  41.    Copyright 1992 by Jonathan T. Higa.
  42.    Distribute freely. */
  43.  
  44. #include <ctype.h>
  45. #include <limits.h>
  46. #include <stdio.h>
  47. #include <stdlib.h>
  48. #include <string.h>
  49.  
  50. #define ATOB 1
  51. #define BTOA 2
  52.  
  53. #define calc_crc(crc, hex) (crc=(crc>>4)^(((crc^(hex))&0xF)*0x1081))
  54. /* Recalculates the Cyclic Redundancy Check value based on the old CRC
  55.    value crc and a new nibble hex.
  56.    Note:  crc should be an unsigned lvalue initialized to 0. */
  57.  
  58. #define lowbits(n) ((1uL << (n)) - 1uL)
  59. /* Creates an unsigned long with only the low n bits set. */
  60.  
  61. typedef unsigned long ulong;
  62.  
  63. long nibs=0L;        /* nibble size of last file processed */
  64. ulong chksum=0uL;    /* checksum of last file processed */
  65. char rom='E';        /* rom revision letter for last file processed */
  66. char ascsuff[]=".asc";    /* ASC file suffix (lowercase) */
  67.  
  68. ulong popbitq(ulong *buf, int *bsize, int nbits)
  69. /* Returns the lowest nbits bits of *buf.
  70.    Removes those bits from *buf and adjusts *bsize appropriately. */
  71. {
  72.    ulong b;
  73.    b = *buf & lowbits(nbits);
  74.    *buf >>= nbits;
  75.    *bsize -= nbits;
  76.    return b;
  77. }
  78.  
  79. ulong pushbitq(ulong *buf, int *bsize, int nbits, ulong bits)
  80. /* Pushes the low nbits of bits onto the high end of *buf.
  81.    Adjusts *bsize appropriately.
  82.    Returns the bits actually pushed. */
  83. {
  84.    bits &= lowbits(nbits);
  85.    *buf |= bits << *bsize;
  86.    *bsize += nbits;
  87.    return bits;
  88. }
  89.  
  90. int asctobin(FILE *fasc, FILE *fbin)
  91. /* Translate ASC to HP48 binary.
  92.    Returns 0 if ok, 1 on error. */
  93. {
  94.    ulong buf=0, crc=0;
  95.    int bsize=0, c, d;
  96.  
  97.    /* scan input file to find line beginning with '"' */
  98.    c = '\n';
  99.    do {
  100.       d = c;
  101.       c = getc(fasc);
  102.    } while (c != EOF && (d != '\n' || c != '"'));
  103.    if (c == EOF) {
  104.       fputs("ASC->bin: Invalid ASC file\n", stderr);
  105.       return 1;
  106.    }
  107.  
  108.    /* write header into binary file */
  109.    fputs("HPHP48-", fbin);
  110.    putc(rom, fbin);
  111.  
  112.    /* translate data */
  113.    nibs = -4;
  114.    while (fscanf(fasc, "%1x", &d) == 1) {
  115.       pushbitq(&buf, &bsize, 4, d);
  116.       calc_crc(crc, d);
  117.       nibs++;
  118.       if (bsize >= 16 + CHAR_BIT)
  119.      fputc((int) popbitq(&buf, &bsize, CHAR_BIT), fbin);
  120.    }
  121.  
  122.    /* check CRC */
  123.    if (bsize > 16)
  124.       fputc((int) popbitq(&buf, &bsize, bsize - 16), fbin);
  125.    chksum = popbitq(&buf, &bsize, 16);
  126.    if (crc || bsize) {
  127.       fputs("ASC->bin: CRC failed\n", stderr);
  128.       return 1;
  129.    }
  130.    return 0;
  131. }
  132.  
  133. int bintoasc(FILE *fbin, FILE *fasc)
  134. /* Translates HP48 binary to ASC format.
  135.    Return 0 if ok, 1 on error. */
  136. {
  137.    ulong buf=0, crc=0, skip=0;
  138.    int bsize=0, c, width=0;
  139.    enum { NONE, SIZE, ASCIC, ASCIX, DIR } state=NONE;
  140.    const int MAXWIDTH=64;
  141.    char str[7];
  142.  
  143.    /* check input for "HPHP48-" header */
  144.    if (fread(str, 1, 7, fbin) != 7
  145.       || strncmp(str, "HPHP48-", 7)
  146.       || (c = getc(fbin)) == EOF) {
  147.       fputs("bin->ASC: Invalid source file header\n", stderr);
  148.       return 1;
  149.    }
  150.    rom = c;
  151.  
  152.    /* write header into ASC file */
  153.    fputs("%%HP: T(1);\n\"", fasc);
  154.  
  155.    nibs = 0;
  156.    while ((c = getc(fbin)) != EOF) {
  157.       pushbitq(&buf, &bsize, CHAR_BIT, c);
  158.  
  159.       /* parse input HP objects */
  160.       if (!skip)
  161.      switch (state) {
  162.         case NONE: if (bsize >= 20) {
  163.            ulong pro = buf & lowbits(20);
  164.            skip = 5;
  165.            if (pro == 0x29e8uL || pro == 0x2a0auL || pro == 0x2a2cuL
  166.           || pro == 0x2a4euL || pro == 0x2b1euL || pro == 0x2b40uL
  167.           || pro == 0x2b62uL || pro == 0x2b88uL || pro == 0x2dccuL)
  168.           state = SIZE;
  169.            else if (pro == 0x2e48uL || pro == 0x2e6duL || pro == 0x2afcuL)
  170.           state = ASCIC;
  171.            else if (pro == 0x2a96uL) state = DIR, skip = 8;
  172.            else if (pro == 0x2911uL) skip = 10;
  173.            else if (pro == 0x2933uL) skip = 21;
  174.            else if (pro == 0x2955uL) skip = 26;
  175.            else if (pro == 0x2977uL) skip = 37;
  176.            else if (pro == 0x299duL) skip = 47;
  177.            else if (pro == 0x29bfuL) skip = 7;
  178.            else if (pro == 0x2e92uL) skip = 11;
  179.         }
  180.         break;
  181.         case SIZE: if (bsize >= 20)
  182.            state = NONE, skip = buf & lowbits(20);
  183.         break;
  184.         case ASCIC: if (bsize >= 8)
  185.            state = NONE, skip = 2 + 2 * (buf & lowbits(8));
  186.         break;
  187.         case ASCIX: if (bsize >= 8)
  188.            state = NONE, skip = 4 + 2 * (buf & lowbits(8));
  189.         break;
  190.         case DIR: if (bsize >= 20)
  191.            state = ASCIX, skip = buf & lowbits(20);
  192.         break;
  193.      }
  194.  
  195.       /* write already interpreted binary data */
  196.       while (skip && bsize >= 4) {
  197.      c = (int) popbitq(&buf, &bsize, 4);
  198.      if (width == MAXWIDTH) {
  199.         putc('\n', fasc);
  200.         width = 0;
  201.      }
  202.      fprintf(fasc, "%1.1X", c);
  203.      width++;
  204.      calc_crc(crc, c);
  205.      skip--;
  206.      nibs++;
  207.       }
  208.    }
  209.  
  210.    /* append CRC */
  211.    chksum = crc;
  212.    bsize = 16;
  213.    while (bsize) {
  214.       if (width == MAXWIDTH) {
  215.      putc('\n', fasc);
  216.      width = 0;
  217.       }
  218.       fprintf(fasc, "%1.1X", (int) popbitq(&crc, &bsize, 4));
  219.       width++;
  220.    }
  221.    fputs("\"\n", fasc);
  222.  
  223.    if (buf) {
  224.       fprintf(stderr, "bin->ASC: Binary parsed incorrectly\n");
  225.       return 1;
  226.    }
  227.    return 0;
  228. }
  229.  
  230. int translate(const char *fsrc, const char *fdest, int mode)
  231. /* Translate file named fsrc to file named fdest, using mode mode.
  232.    fsrc == NULL means use stdin; fdest == NULL means use stdout.
  233.    Return 0 if ok, 1 on error. */
  234. {
  235.    FILE *in, *out;
  236.    int i;
  237.    switch (mode) {
  238.       case ATOB: if (fsrc) {
  239.      in = fopen(fsrc, "r");
  240.      if (!in) { perror(fsrc); return 1; }
  241.       } else
  242.      in = stdin;
  243.       if (fdest) {
  244.      out = fopen(fdest, "wb");
  245.      if (!out) { perror(fdest); return 1; }
  246.       } else abort();
  247.       i = asctobin(in, out);
  248.       break;
  249.       case BTOA: if (fsrc) {
  250.      in = fopen(fsrc, "rb");
  251.      if (!in) { perror(fsrc); return 1; }
  252.       } else abort();
  253.       if (fdest) {
  254.      out = fopen(fdest, "w");
  255.      if (!out) { perror(fdest); return 1; }
  256.       } else
  257.      out = stdout;
  258.       i = bintoasc(in, out);
  259.       break;
  260.       default: abort();
  261.    }
  262.    fclose(in);
  263.    fclose(out);
  264.    return i;
  265. }
  266.  
  267. int main(int argc, char **argv, char **envp)
  268. /* Uses:
  269.    tasc options files
  270.    options:
  271.    -d Force ASC->bin translation (decode ASC)
  272.    -e Force bin->ASC translation (encode ASC)
  273.    -i Use stdin for -a mode / stdout for -b mode:
  274.       ignored in auto-translation
  275.    -q Suppress printouts (quiet)
  276.    -r<let> Set rom revision <let>:
  277.       ignored in bin->ASC translation
  278.    files:
  279.    names of input/output files
  280.    return code: 0 ok, 1 error */
  281. {
  282.    int e, mode=0, stdio=0, verb=1, argi;
  283.    char *p, *q;
  284.  
  285.    /* interpret options as described above */
  286.    e = 0;
  287.    for (argi = 1; argv[argi] && argv[argi][0] == '-'; argi++)
  288.       for (p = argv[argi] + 1; *p; p++) {
  289.      switch (*p) {
  290.         case 'd': if (mode) e++; else mode = ATOB; break;
  291.         case 'e': if (mode) e++; else mode = BTOA; break;
  292.         case 'i': if (stdio) e++; else stdio = 1; break;
  293.         case 'q': if (verb) verb = 0; else e++; break;
  294.         case 'r': if (p[1]) {
  295.            p++;
  296.            if (!strchr("ABCDEF", rom = toupper(*p))) e++;
  297.         } else e++;
  298.         break;
  299.         default: e++;
  300.      }
  301.       }
  302.    if (e) {
  303.       fprintf(stderr, "Use: %s [-deiqr<let>] file [file]\n", argv[0]);
  304.       return 1;
  305.    }
  306.    if (verb) fputs("TASC version 2.50\n", stderr);
  307.  
  308.    /* translate files by method specified */
  309.    switch (mode) {
  310.       case ATOB: if (stdio) {
  311.      if (argc - argi == 1) e = translate(0, argv[argi], ATOB);
  312.      else {
  313.         fputs("ASC->bin: Specify output filename\n", stderr);
  314.         return 1;
  315.      }
  316.       } else {
  317.      if (argc - argi == 2) e = translate(argv[argi], argv[argi+1], ATOB);
  318.      else {
  319.         fputs("ASC->bin: Specify input and output filenames\n", stderr);
  320.         return 1;
  321.      }
  322.       }
  323.       break;
  324.       case BTOA: if (stdio) {
  325.      if (argc - argi == 1) e = translate(argv[argi], 0, BTOA);
  326.      else {
  327.         fputs("bin->ASC: Specify input filename\n", stderr);
  328.         return 1;
  329.      }
  330.       } else {
  331.      if (argc - argi == 2) e = translate(argv[argi], argv[argi+1], BTOA);
  332.      else {
  333.         fputs("bin->ASC: Specify input and output filenames\n", stderr);
  334.         return 1;
  335.      }
  336.       }
  337.       break;
  338.       case 0: if (argc - argi == 1) {
  339.      int i, L;
  340.      L = strlen(argv[argi]);
  341.      q = malloc(L + sizeof ascsuff);
  342.      if (!q) { perror("malloc"); return 1; }
  343.      strcpy(q, argv[argi]);
  344.      p = q + L - (sizeof ascsuff - 1);
  345.      e = 1;
  346.      for (i = 0; e && p[i]; i++)    /* case-ins. comparison of suffix */
  347.         e = tolower(p[i]) == ascsuff[i];
  348.      if (e) {
  349.         *p = 0;
  350.         e = translate(argv[argi], q, ATOB);
  351.      } else {
  352.         p = strrchr(q, ascsuff[0]);
  353.         if (p) strcpy(p, ascsuff); else strcat(q, ascsuff);
  354.         e = translate(argv[argi], q, BTOA);
  355.      }
  356.      free(q);
  357.       } else if (argc - argi == 2) {
  358.      int i, L;
  359.      L = strlen(argv[argi]);
  360.      p = argv[argi] + L - (sizeof ascsuff - 1);
  361.      e = 1;
  362.      for (i = 0; e && p[i]; i++)
  363.         e = tolower(p[i]) == ascsuff[i];
  364.      e = translate(argv[argi], argv[argi+1], e ? ATOB : BTOA);
  365.       } else {
  366.      fputs("tasc: Specify source [and target] filename[s]\n", stderr);
  367.      return 1;
  368.       }
  369.       break;
  370.    }
  371.    if (!e && verb)
  372.       fprintf(stderr, "ROM Revision: %c\nCRC: %lX hex\nSize: %ld%s bytes\n",
  373.      rom, chksum, nibs / 2, nibs & 1 ? " 1/2" : "");
  374.    return e;
  375. }
  376. END_SRC
  377.  
  378. BEGIN_DOC tasc.doc
  379.  
  380.  
  381.  
  382. TASC(1)                  USER COMMANDS                    TASC(1)
  383.  
  384.  
  385.  
  386. NAMES
  387.      tasc - translate HP48 binary files to and from ASC format
  388.  
  389. SYNOPSIS
  390.      tasc [-deiqr<let>] file [file]
  391.  
  392. DESCRIPTION
  393.      Translates HP48 binary files to and from ASC format.
  394.  
  395.      If you specify a translation mode,  you  must  specify  both
  396.      source and target filenames.
  397.      If you do not specify a translation mode, then the  type  of
  398.      input  is  automatically  determined  from the source file's
  399.      name.  If the source filename ends with  .asc,  then  it  is
  400.      assumed  to  be  an  ASC file; if not, it is assumed to be a
  401.      binary file.  If you do not specify a target filename,  then
  402.      it  will  be  created  by adding or removing the .asc suffix
  403.      from the source filename.
  404.  
  405. OPTIONS
  406.      -d   Force ASC->bin (ASC decoding) mode.
  407.  
  408.      -e   Force bin->ASC (ASC encoding) mode.
  409.  
  410.      -i   Use stdin  in  ASC->bin  /  stdout  in  bin->ASC  mode.
  411.           Ignored by auto-translation mode.
  412.  
  413.      -q   Quiet mode.  Suppress the status reports.
  414.  
  415.      -rlet
  416.           Generate files for ROM revision let.  The  default  ROM
  417.           revision  is  E.   Currently  accepted  values are a-f.
  418.           Ignored for bin->ASC translation.
  419.  
  420. DIAGNOSTICS
  421.      Returns 0 on success, 1 on error.   On  successful  exit,  a
  422.      status  report  giving HP48 ROM Revision and object checksum
  423.      and size is printed to the standard error, except  in  quiet
  424.      mode.
  425.  
  426. AUTHOR
  427.      Jonathan T. Higa (jonhiga@phoenix.princeton.edu)
  428.  
  429. CAVEATS
  430.      Version 2.50:
  431.      Requires the ASCII character set.
  432.  
  433. ACKNOWLEDGMENTS
  434.      The   ASC   format   was    designed    by    Bill    Wickes
  435.      (billw@hpcvdw.cv.hp.com).  The CRC algorithm used originally
  436.      comes from the following text:
  437.           da Cruz, Frank.   Kermit:  A  File  Transfer  Protocol.
  438.  
  439.  
  440.  
  441. Sun Release 4.1     Last change: 1992 June 12                   1
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448. TASC(1)                  USER COMMANDS                    TASC(1)
  449.  
  450.  
  451.  
  452.           Bedford, MA: Digital Press, 1987.
  453.      Background info on HP48 object structure was provided in the
  454.      HP48  Tools  Manual;  the object prologue data was extracted
  455.      from the document "HP48SX Internals," by  Derek  S.  Nickel.
  456.      Thanks to Joe Horn for pointing out the appropriate files on
  457.      the EduCalc Goodies Disks.
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507. Sun Release 4.1     Last change: 1992 June 12                   2
  508.  
  509.  
  510.  
  511. END_DOC
  512.  
  513. BEGIN_DOC tasc.1
  514. .TH TASC 1 "1992 June 12"
  515. .SH NAMES
  516. tasc \- translate HP48 binary files to and from ASC format
  517. .SH SYNOPSIS
  518. tasc [\-deiqr<let>] file [file]
  519. .SH DESCRIPTION
  520. Translates HP48 binary files to and from ASC format.
  521. .sp
  522. If you specify a translation mode, you must specify both source and
  523. target filenames.
  524. .br
  525. If you do not specify a translation mode, then the type of input is
  526. automatically determined from the source file's name.
  527. If the source filename ends with .asc, then it is assumed to be an ASC
  528. file; if not, it is assumed to be a binary file.
  529. If you do not specify a target filename, then it will be created by
  530. adding or removing the .asc suffix from the source filename.
  531. .SH OPTIONS
  532. .TP
  533. .B \-d
  534. Force ASC\->bin (ASC decoding) mode.
  535. .TP
  536. .B \-e
  537. Force bin\->ASC (ASC encoding) mode.
  538. .TP
  539. .B \-i
  540. Use stdin in ASC\->bin / stdout in bin\->ASC mode.
  541. Ignored by auto-translation mode.
  542. .TP
  543. .B \-q
  544. Quiet mode.  Suppress the status reports.
  545. .TP
  546. .BI \-r let
  547. Generate files for ROM revision
  548. .I let.
  549. The default ROM revision is E.  Currently accepted values are a-f.
  550. Ignored for bin->ASC translation.
  551. .SH DIAGNOSTICS
  552. Returns 0 on success, 1 on error.  On successful exit, a status report
  553. giving HP48 ROM Revision and object checksum and size is printed to the
  554. standard error, except in quiet mode.
  555. .SH AUTHOR
  556. Jonathan T. Higa (jonhiga@phoenix.princeton.edu)
  557. .SH CAVEATS
  558. Version 2.50:
  559. .br
  560. Requires the ASCII character set.
  561. .SH ACKNOWLEDGMENTS
  562. The ASC format was designed by Bill Wickes (billw@hpcvdw.cv.hp.com).
  563. The CRC algorithm used originally comes from the following text:
  564. .RS
  565. da Cruz, Frank.
  566. .I Kermit:  A File Transfer Protocol.
  567. Bedford, MA: Digital Press, 1987.
  568. .RE
  569. Background info on HP48 object structure was provided in the HP48
  570. Tools Manual; the object prologue data was extracted from the document
  571. "HP48SX Internals," by Derek S. Nickel.  Thanks to Joe Horn for pointing
  572. out the appropriate files on the EduCalc Goodies Disks.
  573. END_DOC
  574.  
  575.  
  576. [ Compiled with Borland C 3.0.  If there are any problems with this 
  577.   executable, please let me know.  -chris ]
  578.  
  579. BEGIN_UU tasc_dos.uue
  580. begin 644 tasc.com
  581. MC,HNB19E`[0PS2&++@(`BQXL`([:HTDUC`9'-8D>0S6)+E\UZ%H!Q#Y!-8O'
  582. MB]BY_W_\\J[C84,F.`5U]H#-@/?9B0Y!-;D!`-/C@\,(@^/XB1Y%-8S:*^J+
  583. M/M0Z@?\``G,'OP`"B3[4.H''4CYR*`,^[#ER(K$$T^]'.^]R&8,^U#H`=`>#
  584. M/NPY`'4.OP`0.^]W!XO]ZP/IM0&+WP/:B1Y7-8D>6S6A1S4KV([`M$I7S2%?
  585. MT^?ZCM*+Y_LSP"Z.!F4#OP`^N5(^*\_\\ZJ#/KXY%'9'@#Y)-0-R0'<'@#Y*
  586. M-1YR-[@!6+L"`,TA<BJT9XL>OCG-(7(@M$B[`0#-(7(70*-?-4B.P+1)S2%R
  587. M"K@!6+L``,TA<P/I-`&T`,T:B19--8D.3S4*P'0,N$``CL"[<``FQ@<!,^TN
  588. MC@9E`[[N/;\`/NBI`/\V/S7_-CTU_S8[->BX"%#HJ0TNC@9E`U97O@`^OP`^
  589. MZ(8`7U[#PXOLM$R*1@+-(;D.`+K_-.G5`!ZX`#7-(8D>*S6,!BTUN`0US2&)
  590. M'B\UC`8Q-;@%-<TAB1XS-8P&-36X!C7-(8D>-S6,!CDUN``EC,J.VKIX`LTA
  591. M'\,>N``EQ18K-<TA'QZX!"7%%B\US2$?'K@%)<46,S7-(1\>N`8EQ18W-<TA
  592. M'\.!_NX]=`0RY.L"M/^+UXO>.]]T(R:`/_]T&('^[CUT!B8Z9P'K!"8X9P%W
  593. M!B:*9P&+TX/#!NO9.]=T&XO:)H`_`";&!_\&=`<F_U\"!^NQ)O]7`@?KJL.T
  594. M0+L"`,TAP[D>`+H--2Z.'F4#Z.K_N`,`4.BN#`````!5B^R#[`165XMV!(M^
  595. M!C/2N`$`BDX(Z&L-+0$`@]H`BUP"BPPCR"/:B5[^B4[\BU0"BP2*3@CH;`V)
  596. M5`*)!(M&""D%BU;^BT;\ZP!?7HOE7<-5B^Q6BW8&,]*X`0"*3@CH(0TM`0"#
  597. MV@`A1@HA5@R*#(M6#(M&"N@*#8M>!`D'"5<"BT8(`02+5@R+1@KK`%Y=PU6+
  598. M[(/L#E97BWX&QT;^``#'1OP``,=&^@``QT;X``#'1O8``,=&]`H`BT;TB4;R
  599. MBUX$_P]\#XM>!(MW"O]'"HH$M`#K!_]V!.A=)EF)1O2#?O3_=`R#?O(*=<Z#
  600. M?O0B=<B#?O3_=1.XGCA0N'`U4.@Z(UE9N`$`Z2<!5[B,-5#H*B-96?\%?0^+
  601. M70K_10J@:C6(![0`ZPI7H&HU4.CG*%E9QP9D-?__QP9B-?S_Z8``BT;RF5)0
  602. MN`0`4(U&]E"-1OQ0Z/K^@\0*BU;ZBT;XL03H0`Q0BT;R4IF+7OI04E.+7OA8
  603. M6EDSV3/"@^,/)0``,])34+B!$%E;Z-0-6UDSR#/:B5[ZB4[X@P9B-0&#%F0U
  604. M`(-^]AA\&5>X"`!0C4;V4(U&_%#H1_Z#Q`90Z&\H65F-1O)0N)0U4/]V!.C#
  605. M(X/$!CT!`'4#Z6?_@W[V$'X<5XM&]@7P_U"-1O90C4;\4.@,_H/$!E#H-"A9
  606. M6;@0`%"-1O90C4;\4.CT_8/$!HD6:#6C9C6+1O@+1OIU!H-^]@!T"KB>.%"X
  607. MF#7ITOXSP.G6_E]>B^5=PU6+[(/L(E97BWX&QT;^``#'1OP``,=&^@``QT;X
  608. M``#'1O8``,=&]```QT;R``#'1NX``,=&[```QT;J0`#_=@2X!P!0N`$`4(U&
  609. MXE#HP"*#Q`@]!P!U.[@'`%"XKC50C4;B4.B4+(/$!@O`=26+7@3_#WP/BUX$
  610. MBW<*_T<*B@2T`.L'_W8$Z'@D68E&\#W__W43N)XX4+BV-5#H:"%96;@!`.GJ
  611. M`XI&\*)J-5>XW#50Z%(A65G'!F0U``#'!F(U``#I&P.+1O"94E"X"`!0C4;R
  612. M4(U&_%#H/_V#Q`J+1O0+1O9T`^E%`HM>[(/[!'8#Z3H"T>,N_Z<W"H-^\A1]
  613. M`^F5`8M&_HM6_(/B_R4/`(E&X(E6WL=&]@``QT;T!0"#?N``=0>!?M[H*71H
  614. M@W[@`'4'@7[>"BIT6X-^X`!U!X%^WBPJ=$Z#?N``=0>!?MY.*G1!@W[@`'4'
  615. M@7[>'BMT-(-^X`!U!X%^WD`K=">#?N``=0>!?MYB*W0:@W[@`'4'@7[>B"MT
  616. M#8-^X`!U#X%^WLPM=0C'1NP!`.G\`(-^X`!U!X%^WD@N=!J#?N``=0>!?MYM
  617. M+G0-@W[@`'4/@7[>_"IU",=&[`(`Z<T`@W[@`'49@7[>EBIU$L=&[`0`QT;V
  618. M``#'1O0(`.FN`(-^X`!U%(%^WA$I=0W'1O8``,=&]`H`Z90`@W[@`'43@7[>
  619. M,REU#,=&]@``QT;T%0#K>X-^X`!U$X%^WE4I=0S'1O8``,=&]!H`ZV*#?N``
  620. M=1.!?MYW*74,QT;V``#'1O0E`.M)@W[@`'43@7[>G2EU#,=&]@``QT;T+P#K
  621. M,(-^X`!U$X%^WK\I=0S'1O8``,=&]`<`ZQ>#?N``=1&!?MZ2+G4*QT;V``#'
  622. M1O0+`.F2`(-^\A1\%\=&[```BT;^BU;\@^+_)0\`B4;VB5;TZW.#?O((?"+'
  623. M1NP``(M&_HM6_('B_P`E``#1XM'0@\("%0``B4;VB5;TZTF#?O((?"+'1NP`
  624. M`(M&_HM6_('B_P`E``#1XM'0@\($%0``B4;VB5;TZQ^#?O(4?!?'1NP#`(M&
  625. M_HM6_(/B_R4/`(E&]HE6].L`Z9\`N`0`4(U&\E"-1OQ0Z(GZ@\0&B4;PBT;N
  626. M.T;J=2#_!7T.BUT*_T4*L`J(![0`ZPE7L`I0Z'HD65G'1NX``/]V\+CJ-5!7
  627. MZ'@>@\0&_T;NBU;ZBT;XL03HY`=0BT;P4IF+7OI04E.+7OA86EDSV3/"@^,/
  628. M)0``,])34+B!$%E;Z'@)6UDSR#/:B5[ZB4[X@V[T`8->]@"#!F(U`8,69#4`
  629. MBT;T"T;V=`F#?O($?`/I4/^+7@3_#WP/BUX$BW<*_T<*B@2T`.L'_W8$Z`8A
  630. M68E&\#W__W0#Z;W\BT;ZBU;XHV@UB19F-<=&\A``ZTF+1NX[1NIU(/\%?0Z+
  631. M70K_10JP"H@'M`#K"5>P"E#HHR-96<=&[@``N`0`4(U&\E"-1OA0Z'7Y@\0&
  632. M4+CP-5!7Z)$=@\0&_T;N@W[R`'6Q5[CV-5#HDQU968M&_`M&_G0.N/DU4+B>
  633. M.%#H:!WI$_PSP.D3_%]>B^5=PYL&/`A;"(4(KPA5B^R#[`)65XM&"#T!`'0(
  634. M/0(`=%CIG0"#?@0`="&X'C90_W8$Z`D=65F+\`OV=0W_=@3HU")9N`$`Z8L`
  635. MZP.^?CB#?@8`=!:X(#90_W8&Z-\<65F+^`O_=0+K2.L#Z*[X5U;H5/E968E&
  636. M_NM+@WX$`'06N",V4/]V!.BT'%E9B_`+]G4"ZZGK`^B#^(-^!@!T&;@F-E#_
  637. M=@;HE1Q968OX"_]U!?]V!NN*ZP._CCA75NBN^NNQZ%?X5NC8&5E7Z-,968M&
  638. M_NER_U]>B^5=PU6+[(/L#E97QT;^``#'1OP``,=&^@$`,_:_`0#IJ`"+Q]'@
  639. MBUX&`]B+!T")1OCIB@"+7OB*!Y@M9`"+V(/[#G=VT>,N_Z<\#X-^_@!T`T;K
  640. M!<=&_@$`ZV"#?OX`=`-&ZP7'1OX"`.M0@W[\`'0#1NL%QT;\`0#K0(-^^@!T
  641. M!\=&^@``ZP%&ZS"+7OB`?P$`="/_1OB+7OB*!YA0Z'\.6:)J-9A0N"@V4.AP
  642. M)EE9"\!U`4;K`4;K`4;_1OB+7OB`/P!T`^EK_T>+Q]'@BUX&`]B#/P!T$XO'
  643. MT>"+7@8#V(L?@#\M=0/I-_\+]G09BUX&_S>X+S90N)XX4.B&&X/$!K@!`.DB
  644. M`X-^^@!T#;B>.%"X4C90Z((;65F+1OX+P'4#Z?4`/0$`=`@]`@!T=^F@`H-^
  645. M_`!T,HM&!"O'/0$`=1RX`0!0B\?1X(M>!@/8_S<SP%#HWOV#Q`:+\.L*N)XX
  646. M4+AE-NE?`NLYBT8$*\<]`@!U);@!`%"+QT#1X(M>!@/8_S>+Q]'@BUX&`]C_
  647. M-^BC_8/$!HOPZPJXGCA0N(@VZ20"Z2P"@W[\`'0RBT8$*\<]`0!U'+@"`%`S
  648. MP%"+Q]'@BUX&`]C_-^AJ_8/$!HOPZPJXGCA0N+8VZ>L!ZSF+1@0KQST"`'4E
  649. MN`(`4(O'0-'@BUX&`]C_-XO'T>"+7@8#V/\WZ"_]@\0&B_#K"KB>.%"XV#;I
  650. ML`'IN`&+1@0KQST!`'0#Z?4`B\?1X(M>!@/8_S?H0259B4;RBT;R!04`4.B.
  651. M$UF)1O:#?O8`=0NX!C=0Z.L?6>FJ_HO'T>"+7@8#V/\W_W;VZ.LD65F+1O8#
  652. M1O(%_/^)1OB^`0#'1O0``.LHBU[X`U[TB@>84.AF#%F+7O10BH=K-9A:.]!U
  653. M!;@!`.L",\"+\/]&]`OV=`N+7O@#7O2`/P!UR0OV=`N+7OC&!P"X`0#K,:!K
  654. M-9A0_W;VZ/4D65F)1OB#?O@`=`RX:S50_W;XZ&TDZPJX:S50_W;VZ/(C65FX
  655. M`@!0_W;VB\?1X(M>!@/8_S?H*_R#Q`:+\/]V]NCM$5GIMP#IM`"+1@0KQST"
  656. M`'0#Z9<`B\?1X(M>!@/8_S?H/R19B4;RB\?1X(M>!@/8BP<#1O(%_/^)1OB^
  657. M`0#'1O0``.LHBU[X`U[TB@>84.B."UF+7O10BH=K-9A:.]!U!;@!`.L",\"+
  658. M\/]&]`OV=`N+7O@#7O2`/P!UR0OV=`6X`0#K`[@"`%"+QT#1X(M>!@/8_S>+
  659. MQ]'@BUX&`]C_-^A^^X/$!HOPZQ+K$+B>.%"X#3=0Z-`865GI,OWK``OV=4^#
  660. M?OH`=$FA9#6+%F(U@^(!)0``"]!T!;AM-^L#N'(W4#/`N@(`4%+_-F0U_S9B
  661. M->@K`5)0_S9H-?\V9C6@:C684+@\-U"XGCA0Z&,8@\00B\;IV_Q?7HOE7<-7
  662. M"V<+Q@O&"\8+=PO&"\8+Q@O&"\8+Q@O&"X<+EPM5B^R#/G0W('4%N`$`ZQ.+
  663. M'G0WT>.+1@2)AP`^_P9T-S/`7<-5B^RT0S+`BU8$S2%R"8M>!HD/,\#K!%#H
  664. MSP%=PU6+[+1#L`&+5@2+3@;-(7($,\#K!%#HM`%=P\-5B^Q6BW8("_9U'NL.
  665. M_PYT-XL>=#?1X_^7`#Z#/G0W`'7KZ'_R_Q9X..CA\NB(\H-^!@!U$POV=0C_
  666. M%GHX_Q9\./]V!.AQ\EE>7<(&`%6+[#/`4%#_=@3HIO]=PU6+[+@!`%`SP%#_
  667. M=@3HE/]=PS/`4+@!`%`SP%#HA?_#N`$`4%`SP%#H>?_#60Y1,\GK%ED.4;D!
  668. M`.L.60Y1N0(`ZP99#E&Y`P!55E>+[(OYBT8*BU8,BUX.BTX0"\EU"`O2=&D+
  669. MVW1E]\<!`'4<"])Y"O?:]]B#V@"#SPP+R7D*]]GWVX/9`(/W!(OIN2``5S/_
  670. M,_;1X-'2T=;1USO]<@MW!#OS<@4K\QO]0.+G6_?#`@!T!HO&B]?1Z_?#!`!T
  671. M!_?:]]B#V@!?7EW*"`#W\_?'`@!T`9(STNOM6PY3@/D0<Q"+V-/@T^+VV8#!
  672. M$-/K"]/+@.D0DC/`T^++6PY3@/D0<Q"+VM/HT^KVV8#!$-/C"\/+@.D0DC/2
  673. MT^C+58OL5HMV!`OV?!6#_EA^`[Y7`(DV[CF*A/`YF(OPZPWWWH/^(W_IQP;N
  674. M.?__B39+-;C__UY=P@(`58OL5HMV!%;HO/^+QEY=P@(`58OLN`!$BUX$S2&2
  675. M)8``7<-5B^R#[")65P:+?@H>!XM>"(/[)'=8@/L"<E.+1@R+3@X+R7T1@'X&
  676. M`'0+Q@4M1_?9]]B#V0"-=M[C#Y$KTO?SD??SB!1&XPGK\2O2]_.(%$8+P'7U
  677. MC4[>]]D#SOQ.B@0L"G,$!#KK`P)&!*KB[[``J@>+1@I?7HOE7<(,`%6+[#/`
  678. M4/]V!O]V!+@*`%"P`%"P85#H:O]=P@0`58OLBUX$T>.!I\`Y__VT0HI&"HM>
  679. M!(M."(M6!LTA<@+K!5#HY/Z97<-5B^Q6BW8(BU8&"_9U`[Y`/O]V!`O2=06X
  680. M2CKK`HO"4%;HP@Q965#HD/^X3CI05NAQ'UE9B\9>7<(&`%6+[(/L`E97BW8&
  681. MBWX$5C/`4(,]_W4%N`(`ZP.X`0`!!8L%4.B>_XOPC4;^4%;HQ/Q960O`=->+
  682. MQE]>B^5=P@0`5I:2A<!T`O?CXP61]^8#P9;WXP/67L-5B^R+7@31X_>'P#D"
  683. M`'0&N`4`4.L2M#^+7@2+3@B+5@;-(7("ZP10Z"/^7<-5B^R#["I65\=&_```
  684. MQT;Z``#K&8M^#/9&_R!T!\0]@T8,!,.+/1X'@T8,`L,&_(MV"JP*P'1>/"5T
  685. M79B7_T;Z_W8(_U8$60O`?":8"_]X,H"]5#H!=2N3"MMX&("_5#H!=1'_1OK_
  686. M=@C_5@19"\!_YNE.`_]V"%/_5@996?].^NNP.\=TK/]V"%#_5@996?].^NE!
  687. M`^D^`\=&]O__QD;_`*R8B78*EPO_?!F*G50Z,O^#^Q5V`^D)`]'C+O^G=Q>7
  688. MZ7?_Z0\#@$[_`>O4@^\PAW[V"_]\RK@*`/?G`4;VZ\"`3O\(Z[J`3O\$Z[2`
  689. M3O\"ZZZ`9O_?ZZB`3O\@ZZ*+1OHKTO9&_P%T4.N5O@@`ZPR^"@#K![X0`.L"
  690. M,_;WQR``=0F#_UAT!(!._P2-1OA0C4;Z4(M&]B7_?U!6_W8(_W8&_W8$Z'@#
  691. M@\0.@W[X`'X8]D;_`74/_T;\Z+?^J_9&_P1T`I*KZ<;^?`/I:`+I40+H``#I
  692. M9@+_=@A0_U8&65G_3OJ!9O;_?^@``.EU`E(\.G05"\!^#/]V"%#_5@996?].
  693. M^EJ,V^L;Z```Z54"6PO`?A!24_]V"%#_5@996?].^EM:]D;_`740Z$C^_T;\
  694. MDJOV1O\@=`*3J^E3_NGC`8U&^%"-1OI0N/]_(T;V4/]V"/]V!O]V!.B!#8/$
  695. M#(-^^`!^.(I&_YBI`0!U*>@%_O]&_/9&_P1T!;@$`.L-]D;_"'0%N`@`ZP(S
  696. MP%!7Z%`-@\0$Z?K]Z$L-Z?3]Z$4-?)SIDP'H``#IE`'V1O\!=0;HPOW_1OR!
  697. M9O;_?W0I]D;_`74!JO]&^@;_=@C_5@19!PO`?A(*P'@)DX"_5#H!DWX%_T[V
  698. M?]<&_W8(4/]6!EE9!_].^O9&_P%U`[``JNF0_?9&_P%U`^AL_8MV]@OV?0.^
  699. M`0!T&O]&^@;_=@C_5@19!PO`?!;V1O\!=0&J3G_F]D;_`74#_T;\Z57]Z>4`
  700. M*\#\%@>-?M:Y$`#SJZR`9O_O/%YU!8!._Q"LM`"*T(OXL0/3[[D'`2+*TN4(
  701. M:]:L/`!T)CQ=="4\+77A.A1WW8`\7738K"K"=.4"T-#%@]<`"&O6_LAU].O5
  702. MZ9P`B78*@6;V_W^+=O;V1O\!=0/HQOQ.?%#_1OH&_W8(_U8$60<+P'Q/EHO>
  703. ML0/3[KD'`2++TN6$:M:6DW0(]D;_$'0(ZP_V1O\0=`GV1O\!=<2JZ\$&_W8(
  704. M4/]6!EE9!_].^D8[=O9]"?9&_P%U!O]&_+``JNE__$8[=O9]#/9&_P%U!K``
  705. MJO]&_/]V"+C__U#_5@9968-^_`OP`!XM&_.F&`/]&^O]V"/]6!%D+P'X3
  706. M"L!X"9.`OU0Z`9-TY5F#P0/_X73X6>N_*]*Y!`#_3O9\15)1_T;Z_W8(_U8$
  707. M65E:"\!^-?[)?#&*Z(#M,'(J@/T*<A>`[1%R((#]!G(*@.T@<A:`_09S$8#%
  708. M"M'BT>+1XM'B`M7KMBO`@/D$=`99@\$#_^%9Z5__7UZ+Y5W#Y!;D%N06SA/5
  709. M$]L3K14?%!\4*13M%.\3^Q/U$QH4417K%0T4)!1_%`$4!Q13@.LP<B*`^PEV
  710. M$H#[*G<%@.L'ZP.`ZR>`^PEV"SK9<P=$1/BW`.L"6_G#58OL@^P&5E?&1O\`
  711. MQT;\``#'1OH!`/]&_/]V"/]6!%D+P'QHF)/VPX!U"+]W-_8!`77CD_].#'Q:
  712. M/"MT!SPM=1;^1O__3@Q\2O]&_/]V"/]6!%D+P'PU*_:+_HM."N--@_DD=RZ`
  713. M^0)R*3PP=6N`^1!U9/].#'PR_T;\_W8(_U8$63QX=%$\6'1-ZW/'1OK__^L%
  714. MQT;Z``#_=@A0_U8&65G_3OPKP)GIIP#IE``\,,=&"@H`=2/_3@Q\[_]&_/]V
  715. M"/]6!%G'1@H(`#QX=`0\6'4MQT8*$`#K%XM."I/H]?Z3<K"6ZPJ6]V8*`_`3
  716. M^G4L_TX,?$S_1OS_=@C_5@19BTX*D^C/_I-SW>LJEO?AEX?*]^(#]Q/!EQ+6
  717. M=4?_3@Q\(/]&_/]V"/]6!%F+3@J3Z*/^DW/6_W8(4/]6!EE9_T[\B]>6@'[_
  718. M`'0']]KWV(/:`(M^#HM>_`$=BWX0BU[ZB1WK%KC__[K_?P)&_X#4`(/2`,=&
  719. M^@(`Z]A?7HOE7<.Z!0`[%KXY<RN+VM'CQX?`.0``B]JQ!-/CQH>"./^+PM/@
  720. M!7XXB]K3XXF'C#A".Q:^.7+5H((XF%#H\?=9"\!U!H$F@#C__;@``E#W!H`X
  721. M``)T!;@!`.L",\!0,\!0N'XX4.AU%X/$"*"2.)A0Z+WW60O`=0:!)I`X__VX
  722. M``)0]P:0.``"=`6X`@#K`C/`4#/`4+B..%#H01>#Q`C#58OLN`$`4#/`4%#_
  723. M=@3H*OB#Q`A=PU6+[(M6!(/Z_W4%N/__ZQJ*PK0`B]CVAW<W!'0)BL*T``4@
  724. M`.L$BL*T`%W#58OLBU8$@_K_=06X___K&HK"M`"+V/:'=S<(=`F*PK0`!>#_
  725. MZP2*PK0`7<-5B^RT08M6!,TA<@0SP.L$4.C#]EW#BL;H`@"*PM00AN#H`@"&
  726. MX`20)Q1`)ZK#58OL@>R6`%97QT;N``#'1NQ0`,=&Z@``ZT97N?__,L#RKO?1
  727. M25_#-H@%1_Y.['4O4U%2!HV&:O\K^(V&:O]05_]V"/]6"@O`=07'1NH!`,=&
  728. M[%```7[NC;YJ_P=:65O#!OR-OFK_B7[\BW[\BW8&K`K`=!(\)701-H@%1_Y.
  729. M['_NZ*S_Z^GIU0.)=O"L/"5TYXE^_#/)B4[RB4[^B$[UQT;X___'1O;__^L!
  730. MK#+DB]"+V(#K((#[8',3BI_=.H/[%W8#Z8@#T>,N_Z<$'^E^`X#]`'?X@T[^
  731. M`>O0@/T`=^V#3OX"Z\6`_0!WXH!^]2MT`XA6]>NU@V;^W^L$@T[^(+4%ZZ>`
  732. M_0!W3?=&_@(`=2F#3OX(M0'KD^DS`XM^!#:+!8-&!`*`_0)S$@O`>0;WV(-.
  733. M_@*)1OBU`^EO_X#]!'77B4;V_L7I8O^`_01SRK4$_T;VZ57_DBPPF(#]`G<9
  734. MM0*'1O@+P'S1T>"+T-'@T>`#P@%&^.DS_X#]!'6;AT;V"\!TM='@B]#1X-'@
  735. M`\(!1O;I%_^#3OX0Z67_@4[^`` O[OZ5G_MPCK"K<*ZPJW$+/I`MK&1O4`
  736. MB%;[,]*(5OJ+?@0VBP7K$+<*QD;Z`8A6^XM^!#:+!9E'1XEV!O=&_A``=`4V
  737. MBQ5'1XE^!(U^NPO`=0T+TG4)@W[V`'4'Z6C^@T[^!%)05XK'F%"*1OI04^CQ
  738. M]!8'BU;V"])]`^GR`.G]`(A6^XEV!HU^NHM>!#;_-T-#B5X$]T;^(`!T$#:+
  739. M%T-#B5X$%@?HG?VP.JH6!UKHE/TVQ@4`QD;Z`(-F_ON-3KHK^8?/BU;V.]%_
  740. M`HO1Z9\`B78&B%;[BWX$-HL%@T8$`A8'C7Z[,N0VB06Y`0#IP@")=@:(5ON+
  741. M?@3W1OX@`'4--HL]@T8$`AX'"__K"S;$/8-&!`2,P`O'=04>![_6.NA5_3M.
  742. M]G8#BT[VZ84`B78&B%;[BWX$BT[V"\E]`[D&`%=1C5Z[4U*X`0`C1OY0BT;^
  743. MJ0`!=`FX"`"#1@0*ZP>#1@0(N`8`4.CR!!8'C7Z[]T;^"`!T&(M6^`O2?A'H
  744. M]_PF@#TM=0%)*]%^`XE6\B:`/2UT"XI&]0K`=!1/)H@%@W[R`'X*BT[V"\E]
  745. M`_].\NC%_(OWBW[\BU[XN`4`(T;^/04`=1.*9ON`_&]U#8-^\@!_!<=&\@$`
  746. MZQN`_'AT!8#\6'41@T[^0$M+@V[R`GT%QT;R```#3O+W1OX"`'4,ZP:P(.A^
  747. M_$L[V7_V]T;^0`!T"[`PZ&W\BD;[Z&?\BU;R"])^)RO**]HFB@0\+70(/"!T
  748. M!#PK=0<FK.A(_$E+A\KC![`PZ#W\XOF'RN,2*]DFK#:(!4?^3NQ_`^@P_.+P
  749. M"]M^"8O+L"#H&OSB^>E:_(EV!HM^!/=&_B``=0LVBSV#1@0"'@?K!S;$/8-&
  750. M!`2X4``J1NP#1NXFB07W1OX0`'0'1T<FQP4``.D;_(MV\(M^_+`EZ,[[K`K`
  751. M=?B`?NQ0?0/HR?L'@W[J`'0%N/__ZP.+1NY?7HOE7<((`&P;5ANA&V$;SQO<
  752. M&QH<(1PF'(H;3QPM'#$<-1RI'%8=^1P9'9@>U![4'M0>?!N"&U6+[%97BWX$
  753. M_W8&Z$`368OP0%#_=@97Z!H,@\0&B\<#QE]>7<-5B^R+1@2+U('J``([PG,'
  754. MHU,U,\#K"<<&2S4(`+C__UW#58OLBT8$BU8&`P93-8/2`(O("])U$('!``)R
  755. M"CO,<P:'!E,UZPG'!DLU"`"X__]=PU6+[/]V!.BD_UE=PU6+[(M&!)E24.BW
  756. M_UE97<.Z/COK`[I#.[D%`+1`NP(`S2&Y)P"Z2#NT0,TAZ6GC58OLBU8(M$2*
  757. M1@:+7@2+3@K-(7(,@WX&`'4$B\+K!NL$4.@C\5W#5E>+](M<!H/K!'(..QYR
  758. M.W0%Z$(`ZP/H`P!?7L,Y'G`[=".+=P+V!`%T!HDV<COK(#LV<#MT#8O>Z%0`
  759. MBT<"HW([ZPV+WC/`HW`[HW([HW0[4^CV_EO#_P\['G`[=!B+=P*+!*@!=0\#
  760. M!XD$BS\#^XEU`HO>ZP/H,@"+/P/[BP6H`70!PP$'B_<#\(E<`HO?BW\&.]]T
  761. M#HD^=#N+=P2)=02)?`;#QP9T.P``PXLV=#L+]G00BWP&B5P&B5T$B7\&B7<$
  762. MPXD>=#N)7P2)7P;#5E>+](M$!@O`=%(%!0!R-B7^_ST(`',#N`@`@SYP.P!T
  763. M'XL>=#L+VW0-B],Y!W,:BU\&.]IU]>AF`.LAZ(H`ZQSH'`#K%S/`ZQ.+\(/&
  764. M"#DW<^GH:___!XO#!00`7U[#4#/`4%#H-OY;6R4!`'0),])24.@H_EM;6%`S
  765. MVU-0Z!W^6UL]__]T%(O8B1YP.XD><CM80(D'@\,$B\/#6S/`PU`SVU-0Z/;]
  766. M6UL]__]T%HO8H7([B4<"B1YR.UA`B0>#PP2+P\-8,\##*0>+\P,WB_X#^$")
  767. M!(E<`HEU`H/&!(O&PXOL4U!14.@5_UN+V`O`=!\>!_R+^(MV_HL,@\8$5H/I
  768. M!='I\Z6)1O[H)/Y;BU[^@\0&PXO"@\((.]%W-8O1.QYR.W4/B0?_!P/#4U#H
  769. M2_U;6^L>B_L#^(E=`BO0*1>+]P/RB7P"0HD5B\N+W^@W_HO9@\,$PU9758OL
  770. MBUX(BT8*"\!T-PO;="V#ZP2+#TF+T(/"!8/B_H/Z"',#N@@`.\IR#'<%@\,$
  771. MZPCHA__K`^A/_XO#ZPU0Z&7^ZP93Z)#],\!;75]>P_\FYCW_)N@]_R;J/?\F
  772. M[#T``(\&>CN/!GP[CP9^.RZ,'I4BB3:`.XD^@CO\C@9'-;Z``#+D)JQ`C,6'
  773. MUI.+-D$U1D:Y`0"`/DDU`W(1C@9#-8O^L7\RP/*NXVZ`\7]0B\$#PT`E_O^+
  774. M_"OX<ER+YP8?%@=12?.D,L"JCMV'\H?9B\.+T$/H&0!W!W)`Z!(`=_D\('0(
  775. M/`UT!#P)=>@RP.OD"\!T!T*J"L!U`4.&X#+`^>,5K$DL(G0/!"(\7'4'@#PB
  776. M=0*L20OVP^G_WUD#RBZ.'I4BB1YV.T,#VXOTB^PKZW+FB^6)+G@[XPZ)=@"#
  777. MQ0(VK`K`X/IT\#/`B48`+HX>E2*+-H`[BSZ"._\V?CO_-GP[H78[HSLUH7@[
  778. MHSTU_R9Z.U97BPY!-5'H*_U9B_@+P'0B'AX'CAY#-3/V_/.D'XOX!O\V137H
  779. M#?U;B]@'HX0["\!U`^ERWS/`N?__@#T`=`R)/X/#`O*N)C@%=?2)!U]>H80[
  780. MHS\UPU6+[(M."+1#BD8&BU8$S2%R`Y'K!%#H%^U=PU6+[(M6!#L6OCER";@&
  781. M`%#H`NWK#XO:T>/'A\`Y``!2Z`,`65W#58OLM#Z+7@3-(7(,T>/'A\`Y```S
  782. MP.L$4.C3[%W#58OL@^P$BT8$.P:^.7(&N`8`4.M;BUX$T>/WA\`Y``)T!;@!
  783. M`.M,N`!$BUX$S2%R/O;"@'4UN`%",\F+T<TA<BY24+@"0C/)B]'-(8E&_(E6
  784. M_EI9<AFX`$+-(7(2.U;^<@EW!3M&_'("Z[<SP.L$4.A>[(OE7<-5B^Q65XM^
  785. M!+[__SE]#G5?@WT&`'0<@ST`?0E7Z%8`60O`=4OW10($`'0'_W4(Z`C[68!]
  786. M!`!\"XI%!)A0Z`7_68OPQT4"``#'108``,<%``#&103_@WT,`'04,\!04/]U
  787. M#.@4[5#H&O59QT4,``"+QE]>7<-5B^Q65XM^!`O_=07H;@#K9CE]#G0%N/__
  788. MZUZ#/0!\*?=%`@@`=0J+QP4%`#E%"G5&QP4``(O'!04`.44*=3B+10B)10KK
  789. M,.LNBT4&`P5`B_`I-5"+10B)10I0BD4$F%#HFPV#Q`8[QG0-]T4"``)U!H--
  790. M`A#KGS/`7UY=PU6+[(/L`E97QT;^``"+/KXYOGXXZQ+W1`(#`'0(5NAB_UG_
  791. M1OZ#QA"+QT\+P'7GBT;^7UZ+Y5W#58OL@^P"5E>+=@C'1OX``(O>1HH/BL$\
  792. M<G4(N@$`OP$`ZR"`^7=U!;H"`^L(@/EA=0VZ`@G'1OZ``+\"`.L$,\#K:8H,
  793. M1H#Y*W0/@#PK=1^`^71T!8#Y8G45@/DK=0**#(/B_(/*!,=&_H`!OP,`@/ET
  794. M=0:!R@!`ZQV`^6)U!H'*`(#K#Z'H.24`P`O0B\*I`(!T`X//0,<&>CB&-(M>
  795. M!HD7BUX$BT;^B0>+QU]>B^5=P@8`58OL@^P$5HMV"O]V!HU&_E"-1OQ0Z#3_
  796. MB40""\!T((!\!`!])_]V_(M&_@M&!%#_=@CHR@2#Q`:(1`0*P'T-QD0$_\=$
  797. M`@``,\#K08I$!)A0Z'/J60O`=`6!3`(``K@``E#W1`(``G0%N`$`ZP(SP%`S
  798. MP%!6Z/P)@\0("\!T!U;HG_U9Z\+'1`P``(O&7HOE7<((`%:^?CB`?`0`?!.A
  799. MOCFQ!-/@!7XXB]:#QA`[PG?G@'P$`'P$,\#K`HO&7L-5B^SHS_^+T`O`=00S
  800. MP.L-4O]V!/]V!C/`4.@D_UW#58OLN,XN4/]V!/]V!HU&"%#HX?)=PU6+[%97
  801. MBWX$"_]U!#/`ZR-7Z,<*68OP"\!T\5=6_W8&Z`0'"\!T"8O>BD'_M`#K`[C_
  802. M_U]>7<-5B^Q65^FY`/]&!HM>!(M'!CM&!G8%BT8&ZP:+7@2+1P:+^(M>!/='
  803. M`D``=&&#?P8`=%N+1P8[1@9S4X,_`'5._TX&,__K#(M>!`-_!HM'!BE&!HM>
  804. M!(M'!CM&!G;I5_]V"(I'!)A0Z)GJ@\0&B]`!5@@[UW1+B\<KP@%&!HM>!(-/
  805. M`B#K1(M>"(@7_T8(_TX&BT8&"\!T)$]T(8M>!/\/?`R+=PK_1PJ*!+0`ZP?_
  806. M=@3H$0)9B]`]__]URH/Z_W2\@WX&`'0#Z3[_BT8&7UY=P@8`58OL@^P$5HMV
  807. M!@OV=#:+WC/)BT8(,]+H_^F)5OZ)1OR#^@%W'W($"\!S&?]V!/]V_/]V"NCV
  808. M_HM6_"O04C/26/?VZP(SP%Z+Y5W#58OLC48(4/]V!O]V!+@`,U"XM"I0Z/KI
  809. M@\0*7<-5B^Q65XMV!(,\`'T*BU0&`Q1"B_KK"XL$F3/"*\*+T(OX]T0"0`!U
  810. M+(M,"H,\`'T=ZPE)B]F`/PIU`4>+PDH+P'7PZQ"+V4&`/PIU`4>+PDH+P'7P
  811. MB\=?7EW"`@!5B^Q65XMV!(M^"E;HQ?M9"\!T!;C__^M'@_\!=1"#/`!^"U;H
  812. M?/^9*48&&58(@60"7_['!```BT0(B40*5_]V"/]V!HI$!)A0Z&/H@\0(@_K_
  813. M=0H]__]U!;C__^L",\!?7EW#58OL@^P$5HMV!(I$!)A0Z/[O68E6_HE&_(/Z
  814. M_W4%/?__=!V#/`!]#5;H$_^9`4;\$5;^ZPM6Z`;_F2E&_!E6_HM6_HM&_%Z+
  815. MY5W#5E>_%`"^?CCK$XM$`B4``ST``W4%5N@,^UF#QA"+QT\+P'7F7U[#58OL
  816. M5HMV!/=$`@`"=`/HR/__=`:+1`B)1`I0BD0$F%#H\`6#Q`:)!`O`?@B#9`+?
  817. M,\#K'H,\`'4.BT0")7_^#2``B40"ZPC'!```@TP"$+C__UY=P@(`58OL5HMV
  818. M!/\$5N@$`%E>7<-5B^Q6BW8$"_9U!KC__^F7`(,\`'X-_PR+7`K_1`J*!^F#
  819. M`(,\`'Q4]T0"$`%U3?=$`@$`=$:!3`*``(-\!@!T#%;H4_\+P'3-Z\#KR?=$
  820. M`@`"=`/H&O^X`0!0N$X^4(I$!)A0Z$0%@\0&"\!U(XI$!)A0Z#3Y63T!`'0&
  821. M@TP"$.N)BT0")7_^#2``B40"Z7K_@#Y./@UU!_=$`D``=*Z#9`+?H$X^M`!>
  822. M7<.X?CA0Z$[_6<-5B^Q65QX'BWX$BW8&BTX(T>G\\Z5S`:2+1@1?7EW#58OL
  823. MBTX$M#R+5@;-(7("ZP10Z)/E7<($`%6+[(M>!"O)*]*T0,TA7<("`%6+[(/L
  824. M!%97BW8&BWX(]\8`P'4(H>@Y)0#`"_`SP%#_=@3H*/A968E&_O?&``%T>",^
  825. MZCF+QZF``74'N`$`4.@[Y8-^_O]U(X,^[CD"=`K_-NXYZ"?EZ>T`]\>``'0$
  826. M,\#K`[@!`(E&_NL,]\8`!'0WN%``4.O<]\;P`'09_W8$,\!0Z$__B_@+P'T#
  827. MZ;4`5^C[]UGK$O]V!/]V_N@V_XOX"\!];.F<`%;_=@3HG0!968OX"\!\6C/`
  828. M4%?H=_-968E&_*F``'0>@<X`(/?&`(!T'B7_``T@`%"X`0!05^A4\X/$!NL*
  829. M]\8``G0$5^C^_O=&_@$`=!KWQ@`!=!3WQO``=`ZX`0!04/]V!.@_]X/$!@O_
  830. M?"_WQ@`#=`6X`!#K`C/`B]:!XO_X"]!2]T;^`0!T!#/`ZP.X``%:"]"+W]'C
  831. MB9?`.8O'7UZ+Y5W#58OL@^P"L`&+3@;WP0(`=0JP`O?!!`!U`K``BU8$L?`B
  832. M3@8*P;0]S2%R&HE&_HM&!B7_N`T`@(M>_M'CB8?`.8M&_NL$4.CHXXOE7<-5
  833. MB^RA2S4[!M`[?1.#/DLU`'P,BQY+-='CBY>&.^L#NLH]4O]V!+C8/5"XGCA0
  834. MZ!7Z@\0(7<-5B^Q6BW8&_PQ6BD8$F%#H!0!965Y=PU6+[%97BWX&BD8$HE`^
  835. M@SW_?3K_!8M="O]%"H@']T4""`!U`^GU`(`^4#X*=`J`/E`^#70#Z>0`5^AV
  836. M]UD+P'4#Z=@`N/__Z=<`Z<\`]T4"D`!U!_=%`@(`=0:#30(0Z^.!30(``8-]
  837. M!@!T18,]`'0)5^@]]UD+P'7*BT4&]]B)!8M="O]%"J!0/H@']T4""`!U`^F&
  838. M`(`^4#X*=`>`/E`^#75X5^@*]UD+P'1OZY7K:XI%!)C1X(O8]X?`.0`(=!.X
  839. M`@!0,\!04(I%!)A0Z+SC@\0(@#Y0/@IU'_=%`D``=1BX`0!0N.`]4(I%!)A0
  840. MZ,(%@\0&/0$`=1BX`0!0N%`^4(I%!)A0Z*H%@\0&/0$`=`KW10(``G4#Z3__
  841. MH%`^M`!?7EW#58OLN(XX4/]V!.C._EE97<-5B^R#[`)65XM^!(M&!HE&_O=%
  842. M`@@`="GK&E>+7@C_1@B*!YA0Z*+^65D]__]U!3/`Z54!BT8&_TX&"\!UW.E%
  843. M`?=%`D``=0/IWP"#?08`=0/IF`"+108[1@9S3X,]`'0)5^@7]ED+P'7%BD4$
  844. MF-'@B]CWA\`Y``AT$[@"`%`SP%!0BD4$F%#HS>*#Q`C_=@;_=@B*10284.CC
  845. M!(/$!CM&!G(#Z>``ZX?IVP"+!0-&!GP;@ST`=0JX__\K10:)!>L,5^BW]5D+
  846. MP'0#Z6+__W8&_W8(_W4*Z,'[@\0&BP4#1@:)!8M&!@%%"NF:`(I%!)C1X(O8
  847. M]X?`.0`(=!.X`@!0,\!04(I%!)A0Z$OB@\0(_W8&_W8(BD4$F%#H802#Q`8[
  848. M1@9S8>D'_^M<@WT&`'0]ZR__!7T4BUT*_T4*BW8(_T8(B@2(![0`ZP]7BUX(
  849. M_T8(B@=0Z%S]65D]__]U`^G._HM&!O].!@O`=<?K&?]V!O]V"(I%!)A0Z/\"
  850. M@\0&.T8&<P/IJ?Z+1OY?7HOE7<(&`%6+[(/L!%97BT8$.P:^.7(*N`8`4.BX
  851. MX.FG`(M&"$`]`@!R#8M>!-'C]X?`.0`"=`4SP.F,`/]V"/]V!O]V!.A`XH/$
  852. M!HE&_D`]`@!R#8M>!-'C]X?`.0!`=06+1O[K8HM._HMV!AX'B_Z+WORL/!IT
  853. M+3P-=`6JXO3K'.+P!E.X`0!0C4;]4/]V!.CUX8/$!EL'_(I&_:H[^W4"ZYGK
  854. M(%.X`0!0]]D;P%!1_W8$Z!;A@\0(BUX$T>.!C\`Y``);*_N77UZ+Y5W#58OL
  855. M5E>+=@2+?@HY=`YU#(-^"`)_!H'__W]V!KC__^FD`(,^Y#T`=0Z!_HXX=0C'
  856. M!N0]`0#K$X,^XCT`=0R!_GXX=0;'!N(]`0"#/`!T#[@!`%`SP%!05NCT]X/$
  857. M"/=$`@0`=`?_=`CH?.Y9@V0"\\=$!@``B\8%!0")1`B)1`J#?@@"=#X+_W8Z
  858. MQP9X.*PT@WX&`'485^@<[UF)1@8+P'4#Z7?_@TP"!.L#Z6[_BT8&B40*B40(
  859. MB7P&@WX(`74$@TP""#/`7UY=PU6+[%97_(M^!!X'B]<RP+G___*NC77_BWX&
  860. MN?__\J[WT2OYA_?WQ@$`=`*D2='I\Z5S`:227UY=PU6+[%;\BW8$BEX&]\8!
  861. M`'0)K#K#=!DBP'01K3K#=!$BP'0(.N-T""+D=>\SP.L$1HU$_EY=PU6+[%97
  862. M'@?\BWX&B_<RP+G___*N]]&+?@3SI(M&!%]>7<-5B^Q7C-B.P(M^!#/`_+G_
  863. M__*ND??02%]=PU6+[%97C-B.P/R+?@:+]XM&"(O(XQV+V#+`\JXKV8O+B_Z+
  864. M=@3SIHI$_XI=_S+DBOPKPU]>7<-5B^Q6BW8$5NBD_UE`B]"+S@/*ZP])B]F*
  865. M!SI&!G4$B\'K!TH+TG7M,\!>7<-5B^Q6BU8$BW8&@_K_=#2#/`!]!;C__^LL
  866. M@V0"W_\$BP0]`0!^#/],"HM<"HK"B`?K#8O&!04`B40*BL*(1`6T`.L"B\)>
  867. M7<-5B^R![(@`5E>+?@2+=@8[/KXY<@JX!@!0Z,O=Z=\`BT8(0#T"`',%,\#I
  868. MT0"+W]'C]X?`.0`(=`^X`@!0,\!04%?HF-Z#Q`B+W]'C]X?`.0!`=0[_=@A6
  869. M5^BH`(/$!NF<`(O?T>.!I\`Y__V)=OJ+1@B)1O[K3?]._HM>^O]&^HH'B$;]
  870. M/`IU!,8$#4:*1OV(!$:-AGC_B]8KT('Z@`!\)ROP5E!7Z%L`@\0&B]`[QG02
  871. M@_K_=06X___K/8M&""M&_NLQC;9X_X-^_@!UJ8V&>/\K\(O&"\!V(5:-AGC_
  872. M4%?H(`"#Q`:+T#O&=`Z#^O]TQ8M&"`/"*\;K`XM&"%]>B^5=PU6+[(M>!-'C
  873. M]X?`.0$`=`:X!0!0ZQ^T0(M>!(M."(M6!LTA<@]0BUX$T>.!C\`Y`!!8ZP10
  874. MZ*O<7<-65S/_OGXX.SZ^.7,6]T0"`P!T!5;H-_!9@\801SL^OCERZE]>PU97
  875. MOP0`OGXXZQ#W1`(#`'0%5NB)\%E/@\80"_]U[%]>PP````````!";W)L86YD
  876. M($,K*R`M($-O<'ER:6=H="`Q.3DQ($)O<FQA;F0@26YT;"X`1&EV:61E(&5R
  877. M<F]R#0I!8FYO<FUA;"!P<F]G<F%M('1E<FUI;F%T:6]N#0H`````````````
  878. M`````````````````````````````````````%(^4CX`````````````````
  879. M``````````!%+F%S8P!!4T,M/F)I;CH@26YV86QI9"!!4T,@9FEL90H`2%!(
  880. M4#0X+0`E,7@`05-#+3YB:6XZ($-20R!F86EL960*`$A02%`T."T`8FEN+3Y!
  881. M4T,Z($EN=F%L:60@<V]U<F-E(&9I;&4@:&5A9&5R"@`E)4A0.B!4*#$I.PHB
  882. M`"4Q+C%8`"4Q+C%8`"(*`&)I;BT^05-#.B!":6YA<GD@<&%R<V5D(&EN8V]R
  883. M<F5C=&QY"@!R`'=B`')B`'<`04)#1$5&`%5S93H@)7,@6RUD96EQ<CQL970^
  884. M72!F:6QE(%MF:6QE70H`5$%30R!V97)S:6]N(#(N-3`*`$%30RT^8FEN.B!3
  885. M<&5C:69Y(&]U='!U="!F:6QE;F%M90H`05-#+3YB:6XZ(%-P96-I9GD@:6YP
  886. M=70@86YD(&]U='!U="!F:6QE;F%M97,*`&)I;BT^05-#.B!3<&5C:69Y(&EN
  887. M<'5T(&9I;&5N86UE"@!B:6XM/D%30SH@4W!E8VEF>2!I;G!U="!A;F0@;W5T
  888. M<'5T(&9I;&5N86UE<PH`;6%L;&]C`'1A<V,Z(%-P96-I9GD@<V]U<F-E(%MA
  889. M;F0@=&%R9V5T72!F:6QE;F%M95MS70H`4D]-(%)E=FES:6]N.B`E8PI#4D,Z
  890. M("5L6"!H97@*4VEZ93H@)6QD)7,@8GET97,*`"`Q+S(````````@("`@("`@
  891. M("`A(2$A(2`@("`@("`@("`@("`@("`@(`%`0$!`0$!`0$!`0$!`0$`"`@("
  892. M`@("`@("0$!`0$!`0!04%!04%`0$!`0$!`0$!`0$!`0$!`0$!`0$0$!`0$!`
  893. M&!@8&!@8"`@("`@("`@("`@("`@("`@("`A`0$!`(```````````````````
  894. M````````````````````````````````````````````````````````````
  895. M````````````````````````````````````````````````````````````
  896. M`````````````````````````````````+8/M@^V#P``"0(`````````````
  897. M?C@```H"`0```````````(XX```"`@(```````````">.```0P(#````````
  898. M````KC@``$("!````````````+XX````````````````````````````````
  899. M````````````````````````````````````````````````````````````
  900. M````````````````````````````````````````````````````````````
  901. M````````````````````````````````````````````````````````````
  902. M````````````````````````````````````````````````````````````
  903. M````````````````````````````````````````````````%``!8`)@`F`$
  904. MH`*@`````````````````````````````````````````$#__P``````$P("
  905. M!`4&"`@(%!4%$_\6!1$"_________________P4%____________________
  906. M_P__(P+_#_____\3__\"`@4/`O___Q/__________R/_____(_\3_P!435``
  907. M+B0D)`````("`@("`@("`0$!`0$"`@("`@("`@("`@("`@("`@(!`@("`@,"
  908. M`@("!`("`@("!04%!04%!04%!0("`@("`@("`@('"A4*#`D"`@L"%`X"`@("
  909. M`@@"`A("`A`"$`("`@("!@<*"@H,"0("#0(1#A,"`@\""`("$@("`@("`@(`
  910. M$"AN=6QL*0``%!0!%!44%!04`@`4`P04"04%!04%!04%!104%!04%!04%!04
  911. M#Q</"!04%`<4%A04%!04%!04%`T4%!04%!04%!04$`H/#P\("A04!A02"PX4
  912. M%!$4#!04#104%!04%!0`<')I;G0@<V-A;F8@.B!F;&]A=&EN9R!P;VEN="!F
  913. M;W)M871S(&YO="!L:6YK960-"@``````````````````````````````TCO:
  914. M._([##P;/"\\03Q1/&8\>#R5/*D\N#S,/```V3SH/`X]'CTL/3T]3CU@/0``
  915. M````````````````````````<CV`/9$]N#TE`$5R<F]R(#``26YV86QI9"!F
  916. M=6YC=&EO;B!N=6UB97(`3F\@<W5C:"!F:6QE(&]R(&1I<F5C=&]R>0!0871H
  917. M(&YO="!F;W5N9`!4;V\@;6%N>2!O<&5N(&9I;&5S`%!E<FUI<W-I;VX@9&5N
  918. M:65D`$)A9"!F:6QE(&YU;6)E<@!-96UO<GD@87)E;F$@=')A<VAE9`!.;W0@
  919. M96YO=6=H(&UE;6]R>0!);G9A;&ED(&UE;6]R>2!B;&]C:R!A9&1R97-S`$EN
  920. M=F%L:60@96YV:7)O;FUE;G0`26YV86QI9"!F;W)M870`26YV86QI9"!A8V-E
  921. M<W,@8V]D90!);G9A;&ED(&1A=&$`3F\@<W5C:"!D979I8V4`071T96UP=&5D
  922. M('1O(')E;6]V92!C=7)R96YT(&1I<F5C=&]R>0!.;W0@<V%M92!D979I8V4`
  923. M3F\@;6]R92!F:6QE<P!);G9A;&ED(&%R9W5M96YT`$%R9R!L:7-T('1O;R!B
  924. M:6<`17AE8R!F;W)M870@97)R;W(`0W)O<W,M9&5V:6-E(&QI;FL`36%T:"!A
  925. M<F=U;65N=`!297-U;'0@=&]O(&QA<F=E`$9I;&4@86QR96%D>2!E>&ES='-&
  926. M:6QE(&%L<F5A9'D@97AI<W1S`%!O<W-I8FQE(&1E861L;V-K`%5N:VYO=VX@
  927. L97)R;W(`)7,Z("5S"@`-``````#('\T?S1_-'P`"31D````0ER(````0J",0
  928. `
  929. end
  930. sum -r/size 9374/21539 section (from "begin" to "end")
  931. sum -r/size 48302/15614 entire input file
  932. END_UU
  933.  
  934. [ Well, since this was for a sun I went ahead and compressed it
  935.   to save space.  There was a LOT of wasted space in the
  936.   uncompressed uuencoded program.  If you don't have uncompress
  937.   on your sun, you can pick it up from the archives.  -chris ]
  938.  
  939. BEGIN_UU tasc_sun4.uue
  940. begin 755 tasc_sun4.Z
  941. M'YV0@08$6````(B"!A$J5`CBX,*"O"`<A#8`%!!)%8E44@%"`"4!H`A\!*+@
  942. M0D$(U$2$@S2@(`)A`,0@``0)0``!@``0"(`02$$%/`OZ1+"S)X`!R3B-``5B
  943. MJ$"C1(,"Z#3N%YH7+EU5$(<B@DM($D0P\`E@B22)`%A!`(``(R@N9)=0D@@"
  944. MD*B&$G(^D2IL`B@O@$"%69"WK%1T%<$(JTA&7$4TI`K8E$0`4`2L;+6*0P()
  945. M[5P0!2XXM"0!G`!,:RV0I:$)K:FU""`)`$!!&N//!T07)`U.`FH`J@NN:$T;
  946. M,P+-=+RR!2MB`]D19P^J@KT8%!J:-G$"6&!<,V<"P"2<!1`!MVX`O'VOK4#V
  947. M0NN#U>&$!!;`W%(^ZI8"8K>44$NV,,DDS%*(_`<!3&%`,B`HC/R'@"`0@$'&
  948. M@I!T!D(`GQ!34'1\!'(,.`@$@LY).1D`(6@0Y$3`B4>D"(``)PX0"30'*:"B
  949. M5($,`Z)4%@H@20'@$$!-`<``<"(!,QYDX1\G!I"D42_4,8<<+["1AAA5DN'"
  950. M'&\`\`(99=CQ@AYER-'E0QF,(0<=,.@`@AMO@!#EE%5>F>66;RCP$``FJ,FF
  951. MFW-2:266;&C))0AMA`$''&FX<08(9H21!AMUR%&&G@M1X&>;;\;Y99ACEIGG
  952. M0E3]4N%:&,`B40"QN`"`!K`8\,,_TLP&0"4R`*%!2@5!8X!/D(CP*C0F^`2+
  953. M`P`DX"&((A94ZJD71J+"J[+-:HL#P"#@JT^1N)"M-`84!%:RQ/;Z*P"T&``(
  954. M`O04"X"J`&RP;(@C`A#$%$.TX(,8C;J9A!MVA&$E&2#<.P2DDUX*`!)0,$P#
  955. M#BT`4$(,>-B+K[[\NN'F$%(<'&G"9&`Z555XD((J*&ME`,P)OY"#"EHK_\)-
  956. M=`JXF(`H!(0$S0&_L&,7"`H45H!4=H$A@G842"4-R^Q`4QD`U?X##0DY88>`
  957. MN@`<()73/DDBP(72D."3BP1`@ZE/!]C0&0#BP6;7'_](\,L_Z1`M"MR%:8W0
  958. M!"=)(D$8J"B'@(MY@#4"`H(;+G;6*8P'@=/B"C#KU`59C350"$%"``@$U%K0
  959. M1V`$P.M1)V�!B@8*."3S#D]`$T5("0HB)U:8?!U@2(>Q`"TFS.@%W)6I"3
  960. M!$IO3H"!T)P."C2K0ZT`"/_\K(!V>HMKO.<`>!VZS=(("X#3G)-M=D'(*X]V
  961. M]FM!@-H/_!B(#0AA8&(*S^2X"((H/'.S]@3CE2<1`7#[1Q^LP3-V3*(&G-M9
  962. MSR#1@>4\[P$06LY:`C`(%(#A`+*Q207!4(`,!@`5&@`"`I`'@/C)YD(TBI\"
  963. MN?&S"SP-`3Q:"__6$H$`8N$S"/")`;[AN+5)@&]L\=L86*##;E"B@#^[R=RX
  964. M(15JY,\N*'LAC^@GB?P%T`@?^04\=-B,'E+1BO_X!Q`^`P'DP8\3V*%`80RP
  965. MM2?6!`':P5Q!@`@!OP$N<1(8`0QT2`OMH<!%`U#5A00)@'DU*R:-TI?!_`4P
  966. M@:6!8%RJU!C*@#`V4!(-90@#F.2@IQ*4@&%NH@(*8I""'2A`6!-S00RP```1
  967. MZ"ECBL27FX30J##((0\@@(,MYU`&@C5J#&^0@Z7&0`<VY$%DI8+#=`"``5&D
  968. M+&;DB!DU3':0F''C-0=YV4%`P3-TK*V.J\*-#B=AB?7\[`"%X4`,`0`!(+9%
  969. M`F-8G`$<@1NK%29I"(%&`8`E.:F5P">6RPD,,U<`,'3.5J`3G?=<!"0%^$2'
  970. M:UA;!5#&%D"08E:%D2,`Z&C'P!4D`6`)`3IT2`8_IB@`;!!D``P$#A2@3CD@
  971. M#8L#=,B%_AGHI`8`!OPP`8DOR@R'<//'-\K)3NQ(H#"U(%HI.(>!G,A"*C`U
  972. M'"$FT8*.0&,VRH*)319R`DP4)`6@^"HNO@J.@JA`6T^\RP2>-HHVMJPE`_@'
  973. MA,;P#TGH*0#4+(!R%!!2=-A%A-I1`51_PAP;B0*P.2G!8`'`U["PX*]PS,F%
  974. M$+)7YC@!LMK9P&(;.P(/8#8G%MBLX8#P6?*(-H]B*"T#3CL"1)2V>N0IR`)"
  975. MR@S(%J8H)`+`&[09`.7,-BQ(4.UB?RN"-KSVM"+@AVUOA!`7>4&;`JAL6"RQ
  976. M7``,#2':)("+K$!-Q!%6`B&(0'5Q6U0`/(&:"I!N"&8P7JFX"`G4K(!ZJ]#>
  977. MYN8D"-34@'KO4-_<ZH":)5!O)_I;WAE0\P7J_06!7<0":A[`M\R11'5/X-[$
  978. M4G,!*_S96G,2@@K'2YO?2RL(#O`TS6(7+0HD!R2>]P]I7<A%%2#%UP20X;N0
  979. M."<1D`J(4[QBZ+DX`"Y:@(P3*.(-9TW'$AE`BN$J5PC0E11W-:IVD.!6%MYE
  980. M`$\CPA1;5D69!14"G\F9VT@!#B`49@2XX^?D%A?09/&(``;%7D)'AQJ@J8YU
  981. M.:$`[,`PN]KEQ`%IAMKN>@>&WXDB>`+%G4'KK`#5]0K.VLV)DC%E(8=:5P[]
  982. MPR;4:`C$!/A-#!SP20'V,!=VFH(`X`B``JDQ"1EP#A(:8&>/(0B;M5'0@AB<
  983. MS:TYZ$%)A)!W+*,&"4WX-57OE!2$F)O<_L&+K>T3:OV$QC\!T.:!BJN@!_V<
  984. M`$(W.O%96M1$D"A%9W+1N/W"'^R0"C9X)NS2G;'.$,`&R_0WB8)HAP92"8E!
  985. M+5KFPH@@T%&;&D#?B#5K?R]WV2MVV`K":$<#H'6TV7.?`:$=0.>3`,`:-)P-
  986. MC6BV*)H`#9_6P0T*R/%M&FBBWD"FT=+37U"CR]R`6S\@$>92QX;3'Q4U"#[-
  987. M@5.G.L-O7'8T%AM3$8A`U`7H7XJM%L?%0B"DJ#@A"CHMZ@9\N@2`5"DA#5DO
  988. M.0#@#F(`@!S"?@>$/,N9S'P-`#*P-@TD43ML1,C/!*`=-",$XD;`3@2TLX!U
  989. M1@"("_`)`>SA-S`P@Q22*,@:/?R"M46@!"<A!05"@0KL3*#IF9,AX`6/CL([
  990. M`Q2)9UM.KEL0B#=%)^58IP1D7@?'N2@%+ZMH3?:>D[YGGCR;UXDU"A\-Q"N^
  991. M1!Y^@.,%+PVBU>3R?U[G!')/`&04GAJ@_SUCE2]X9'@X`BI5SM/!BPI0?(T"
  992. M/@QJ!%ROHMCG4">YD(K@>^%#P>_BF_"B`-<+$@0A#($(13`"`*K`2S>58`X@
  993. ML`4M`"9I$`=RP`.61`<^T`651$E;8`8)TP5Z0@4&`P)V4"9SD`9OX`8@(`,N
  994. M4`,PH"<&@S']`@)3``=E,`9I8`:X]`9U0`=P\((-Z`9AT`8*,X+[4H(GF((K
  995. MB$N-$H-T`#]N0#`N"(,R"(&61(,V.`>OE$@^L$@FB((JR((@\(-'F#!*J#"P
  996. M](2R%(4\2(56&(1A,(0@4(1`.(,U6`9,"`")P@9L\`9C``!T$`9S,`9NLH-3
  997. MB$N1)`>3%(!C2#!S*`=G4`9TP(!(6`99N`5S(($`(`5/T`0@(`5AD@89N('^
  998. M-P8*P#%#X']L@`4@@$EXH`!3D`9DPHED\'\@(`9Y0`=JJ"<@$`,O(`-F5Q60
  999. MH!;,M$P90$T``&*NL"HH<Q`N0@78Y"0L8!K2L$_:H@0`=1<M4!A3X&%'(`K;
  1000. MIFI,P$\@P`F3P!$8,`DZ``9-)0I@X`!-!0`^L%@,`!8'D8U@0&-8%0A:)16E
  1001. MQP.E!P6EAPWU>(\/1P;X"`/V^'#]R(_[^(__6#$/QPA&51@FX&$E0$T!<)`<
  1002. MYF$@0$TX41-JE!/J9%\?MBK8<0':<0$>9@&].!%,$#I,AV-2@3.A(W@@``W5
  1003. MB#YL82#2X%*@`&%AP0/JN(W=B`&"IP'&QQ:%\10%$1(7@I+4.'`^.3?IAQ`^
  1004. M1XRFH4\B9$]SLPH]"0%\YW10)W6`]VE#X!,#\`Y#,C8YH0\JM9':87`<]3<>
  1005. MM1W,809<*0U^9%&@<!,YL5H(00'`)W<U(0':<012`7'$`)=TEQ-V5WHY`0QI
  1006. MI!T0P",E``@3D$1Y(Q634(P"8"$`<(Q`D``ND@J?$0!G>4>RY2*LP!R%LYB-
  1007. M>1<"4!@&%PF2Z34`4`%.R3O;%FD`H`F;V9EIN0`NT@G,@484B9B*R9B.F1.P
  1008. MI9I-B8S145Z)\!D"8)N^Y2*,P!S*``FD.7>H*17$Z2.SX9K(6"LDEQ-ZH)S,
  1009. M^9DYT0?,P0[2"9QW$0"%H036*9E<60JO.6[OJ3F@@0JA]YB4)5M<62%YI`$N
  1010. M(@DJ%9FFL384P)6<8)DW(QD0@#-_P`^_B%=H$3'LQ`H5$`JAP))F5I(`0)="
  1011. M<123H#1-``AY<6@)(`*2!@J0<"$H>A"DD#/J.3?T,)5E*17`0$0`<)VO.1X4
  1012. M`&.;&0(G`0H4$`*A0*!<"0C2P`0%(0JAIQVD!P!<V7KI`W$=M!840$=<F0=V
  1013. M%`HX:IQ4JIQ!Q03Y!AM<.0<$"G$T<)ZEV1&%D0)2$0KN>119X)008)D+BE4,
  1014. MZJ"KHHLI<!*H4`%"BJ%Y\4;:P:%.>A15`**B1Z(F>A0K&@`K"@`M&I?+%J,(
  1015. M(:"3*0!`4`&6\#6541-4R5RY-0";J9Q.F0"U4B1!]0$>I@#C%IYJF4<AP)5M
  1016. ML6U_E%ACZ:F%T6%X"0`<F1,>8)7<YS4@@`(&0@U(@#KN4T*8@!T,(#Q'(168
  1017. M,``7D@D[<"'#MJRT(Y?6)14;()XZH0D3,`:!T*W;`:YC8`AKDP!9"4]08"`^
  1018. M(0#V8`TEQ`GP`@'SUQ-L4!`$8`EA]`\:XJ0$F0#\&D:T(!2$4!`%,+#_P`I"
  1019. M41,`X`$#ZP_]"`2<4!`8$+%>Y:2H4!`=,+#]4"]`4+"MZ;&LY*1%`@`<X+%$
  1020. M(!3,4!`6,+#\L!9.VH\0,+#[``]"00X%00(#>P\9"P0XRZL#6P\$"03\4!`/
  1021. M,+0H0'\(4!`B,+#TL+'V0@$%L0%0"P?TYQ`3,+#Q$+1!P`(%80)<V[+V@@,%
  1022. M40(#^P[L0'\K:Q!I6U;V0H\`@`)I"POTQP6*E[8Y82]H4!`1D+9+:R]T4!`G
  1023. MD+8($01[NP`#ZP[<@!#_L1T(@2P%0;4G@1`6@!!2@0%[(C($X;?Y61`<@!`-
  1024. M@!`5L#=[TK0%$;@O@A`,@!`(!P"CB[`(\0`($2X%(;E9TUP(D0`((0$((3(F
  1025. M41"M^Q"T.T>]BQ#>0QL($6L%4;H%D0&6BQ"05Q#!"P`-9+%[`KU5N[P(X:/;
  1026. M6Q`.@;((X0$(<;T`,`+CBQ`?H+X(80(($;X*X;T+D;PG@!#HN[,(00)[,KT+
  1027. MX;X/4;\/H;H+(1D'P`@%L0.O>P`'```&$`X%002JZP"\6P!D"\%[(QD%(+D-
  1028. M@1`9P!,#$'8/H5@,+`Y[P@*2,0!^4!`O@`@((0,+7`!>9R\."P`[L,`'D`,=
  1029. MBA!%X,%A]1!+(!D(8,#GBP0(<:A'D0=[L@4$'`]ABZ0%408+;`"=&P0]#`!J
  1030. M0,"CX+0S/`<\80#]N!!Z$!2^L">#$!3R^A",$!1$_!"5$!3_NA">L,`#T`GT
  1031. ME[&0RA,'0`I[(I59XP1[\E19,[@/D90',`M[`@R2`0!=X+3(@!#*$,6)'`05
  1032. M6Q#%Q\#PB!#:T,4$N1#BP!,"8`9[L@X\$0#^L"?TL,`$H+_V$@H(T0]=O`H/
  1033. M$0`%D,C!4!`LT(]`AL>'MA`!@`%R["KV(K4!\*O6I<>\3&'XR\LO$!0B@[DW
  1034. MP!,(,,D*$0`_$!3R"P!?0(AE@`>#F\UD$`9SB,V(J(]S$(B#6\ZV1`=?8`9O
  1035. M",[8G,UXD`;=G"B-(LX`DP9FX@;O3`19X`1!T`1),`3B',_=3(?$]`89@\UF
  1036. M8"EE@,T90P=O8-#8;"9M@,UP\`9PP"]T$`?8'`9B$$S=7,YRX`9CT`98^P4B
  1037. MS8=HX'5?`-%O>`=E@LT070>+$M-?X`97,@<*#81QN,Z6HDD*C=&(N-,OJ--?
  1038. M$(-S@`8:S=%?,`9HL`9S4`<5O<YC\(:\I-!U.(:@_`7KS`9S(`9UL-7K/"E@
  1039. MO=4&'=5FL-5M^(8]30=R,(9SP`;@W-!'729FPM)?H(%AM\YP(`>-0@=;+=))
  1040. MB,TB[=0L7=CNC-)N/09P@,3+RT+3G+NO0K8:X`U[6Q"7#`!Q2`;YNB>>_=F@
  1041. M'=JB/=JD7=JF?=JHG=JJO=JLW=JN_=JP'=NR/=NT7=NV?=NXG=NZO=N\W=N^
  1042. M_=O`'=S"/=S$7=S&?=S(G=R?_1]`,+Q`H,JRK0&\\!!`@+=."@;-ZQ#!P:LL
  1043. M_!"8D@&"'`!K'+X!`+:%^KB!``S8+16E`@H!Q`_L717N'4;Y$!0!T-X!9`]!
  1044. M(0#X'4;S$!1S+-\!!`]!00#]_0_M$!0%<.#J$!0&<.#G$!0'<.#D$!0(<.#A
  1045. M$!0)<.#>P,P'O@U!L0`'C@U!P0`'7@U!T0`'7LD`X``'_@Q!\0`'S@Q!`0$'
  1046. MG@Q!$0$';@Q!(0$'/@Q!,0$'3A^3>^"]$!05<."Z$!06<."W$!35>]I%X`(2
  1047. MG=J9/=H"<.6A;0"VHMQ>_N5@'N9B/N9D7N9F?N9HGN9JON9LWN9N_N9P'N=R
  1048. M/N=T7N=V?N=XGN=ZON=\WN=^_N>`'NB"/NB$7NB&?NB(GNB*ONB,WNB._NB0
  1049. M'NF2/NF47NF6?NF8GNF:ONF<WNF>_NF@'NJB/NJD7NJF?NJHGNJJONJLWNJN
  1050. "/NJ2
  1051. `
  1052. end
  1053. END_UU
  1054.